﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class CDInforme : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["GrillaOrden"] = "titulo";
            cargarGeneros();
            cargarSellos();
        }
    }

    private void cargarSellos()
    {
        cboSelloDiscografico.DataSource = DAO.DAOSelloDiscografico.getTodas();
        cboSelloDiscografico.DataTextField = "nombre";
        cboSelloDiscografico.DataValueField = "id_sello_discografico";
        cboSelloDiscografico.DataBind();
        cboSelloDiscografico.Items.Insert(0, new ListItem("(Todos)", ""));
    }

    private void cargarGeneros()
    {
        cboGeneros.DataSource = DAO.DAOGenero.getTodas();
        cboGeneros.DataTextField = "nombre";
        cboGeneros.DataValueField = "id_genero";
        cboGeneros.DataBind();
        cboGeneros.Items.Insert(0, new ListItem("(Todos)", ""));
       
    }

    private List<Entidad.CDQueryInforme> CDsEnSession
    {
        get
        {
            if (Session["CDsEnSession"] != null)
                return (List<Entidad.CDQueryInforme>)Session["CDsEnSession"];
            else
                return null;
        }
        set
        {
            Session["CDsEnSession"] = value;
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        buscarGrilla(0);
    }

    private void buscarGrilla(int indicePagina, string ordenarPor ="titulo")
    {
        DateTime? fechaVentaDesde = null;
        DateTime? fechaVentaHasta = null;
        int? id_genero = null;
        int? id_sello = null;
        if (cboGeneros.SelectedIndex > 0)
        {
            id_genero = int.Parse(cboGeneros.SelectedValue);
        }
        if (cboSelloDiscografico.SelectedIndex > 0)
        {
            id_sello = int.Parse(cboSelloDiscografico.SelectedValue);
        }
        if (!string.IsNullOrEmpty(Request.Form[txtFechaVentaDesde.UniqueID]))
        {
            fechaVentaDesde = DateTime.Parse(Request.Form[txtFechaVentaDesde.UniqueID]);
        }
        if (!string.IsNullOrEmpty(Request.Form[txtFechaVentaHasta.UniqueID]))
        {
            fechaVentaHasta = DateTime.Parse(Request.Form[txtFechaVentaHasta.UniqueID]);
        }
        List<Entidad.CDQueryInforme> cds = DAO.DAOCD.buscarFiltro(fechaVentaDesde, fechaVentaHasta, id_genero, id_sello,ordenarPor);
        CDsEnSession = cds;
        gvCD.DataSource = cds;
        gvCD.DataKeyNames = new string[] { "id_cd" };
        gvCD.PageIndex = indicePagina;
        gvCD.DataBind();
    }

    protected void gvCD_SelectedIndexChanged(object sender, EventArgs e)
    {
        int id_cd = int.Parse(gvCD.SelectedDataKey.Value.ToString());
        //Pasar parametros con querystring
        Response.Redirect("CDABM.aspx?id_cd=" + id_cd);
        //pasar parametros con session
        //Session["id_cd"] = id_cd;
        //Server.Transfer("CDABM.aspx");
    }
    protected void gvCD_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //Si realizo la consulta en SQL es el siguiente codigo
        //        BuscarEnGrilla(e.NewPageIndex, ViewState["GrillaOrden"].ToString());   

        //Solo si trabajo con la lista en Session va el siguiente codigo
        gvCD.DataSource = CDsEnSession;
        gvCD.DataKeyNames = new string[] { "id_cd" };
        gvCD.PageIndex = e.NewPageIndex;
        gvCD.DataBind();
    }
    protected void gvCD_Sorting(object sender, GridViewSortEventArgs e)
    {
        ViewState["GrillaOrden"] = e.SortExpression;
        buscarGrilla(0, e.SortExpression);
    }
}